home *** CD-ROM | disk | FTP | other *** search
MacBinary | 1992-12-14 | 11.6 KB | [ TEXT/CCL2]
open in: MacOS 8.1
extracted
|
Win98
extracted
|
DOS
extracted
browse contents |
view JSON data
|
view as text
This file was processed as: MacBinary
(archive/macBinary ).
Confidence Program Detection Match Type Support
10%
dexvert
MacBinary (archive/macBinary)
fallback
Supported
1%
dexvert
Text File (text/txt)
fallback
Supported
100%
file
MacBinary II, inited, Mon Dec 14 08:45:59 1992, modified Mon Dec 14 08:45:59 1992, creator Common Lisp 2, type ASCII, 11247 bytes "RSA.lisp" , at 0x2c6f 442 bytes resource
default (weak)
99%
file
data
default
74%
TrID
Macintosh plain text (MacBinary)
default
25%
TrID
MacBinary 2
default (weak)
100%
siegfried
fmt/1762 MacBinary (II)
default
100%
lsar
MacBinary
default
id metadata key value macFileType [ TEXT] macFileCreator [ CCL2]
hex view +--------+-------------------------+-------------------------+--------+--------+ |00000000| 00 08 52 53 41 2e 6c 69 | 73 70 00 00 00 00 00 00 |..RSA.li|sp......| |00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........| |00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........| |00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........| |00000040| 00 54 45 58 54 43 43 4c | 32 01 00 00 00 00 00 00 |.TEXTCCL|2.......| |00000050| 00 00 00 00 00 2b ef 00 | 00 01 ba a7 52 40 97 a7 |.....+..|....R@..| |00000060| 52 40 97 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |R@......|........| |00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 03 93 00 00 |........|........| |00000080| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;| |00000090| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;| |000000a0| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;| |000000b0| 3b 3b 0d 3b 3b 52 53 41 | 0d 3b 3b 0d 3b 3b 20 54 |;;.;;RSA|.;;.;; T| |000000c0| 68 65 20 61 6c 67 6f 72 | 69 74 68 6d 73 20 63 6f |he algor|ithms co| |000000d0| 6d 65 20 66 72 6f 6d 20 | 74 77 6f 20 70 61 70 65 |me from |two pape| |000000e0| 72 73 0d 3b 3b 0d 3b 3b | 20 52 2e 4c 2e 20 52 69 |rs.;;.;;| R.L. Ri| |000000f0| 76 65 73 74 2c 20 41 2e | 20 53 68 61 6d 69 72 2c |vest, A.| Shamir,| |00000100| 20 61 6e 64 20 4c 2e 20 | 41 64 65 6c 6d 61 6e 0d | and L. |Adelman.| |00000110| 3b 3b 20 41 20 4d 65 74 | 68 6f 64 20 66 6f 72 20 |;; A Met|hod for | |00000120| 4f 62 74 61 69 6e 69 6e | 67 20 44 69 67 69 74 61 |Obtainin|g Digita| |00000130| 6c 20 53 69 67 6e 61 74 | 75 72 65 73 20 61 6e 64 |l Signat|ures and| |00000140| 20 50 75 62 6c 69 63 20 | 4b 65 79 20 43 72 79 70 | Public |Key Cryp| |00000150| 74 6f 2d 53 79 73 74 65 | 6d 73 0d 3b 3b 20 43 41 |to-Syste|ms.;; CA| |00000160| 43 4d 2c 20 28 31 39 37 | 38 29 2c 20 70 70 2e 31 |CM, (197|8), pp.1| |00000170| 32 30 2d 31 32 36 0d 3b | 3b 0d 3b 3b 20 52 2e 20 |20-126.;|;.;; R. | |00000180| 53 6f 6c 6f 76 61 79 20 | 61 6e 64 20 56 2e 20 53 |Solovay |and V. S| |00000190| 74 72 61 73 73 65 6e 0d | 3b 3b 20 41 20 46 61 73 |trassen.|;; A Fas| |000001a0| 74 20 4d 6f 6e 74 65 2d | 43 61 72 6c 6f 20 54 65 |t Monte-|Carlo Te| |000001b0| 73 74 20 66 6f 72 20 50 | 72 69 6d 61 6c 69 74 79 |st for P|rimality| |000001c0| 0d 3b 3b 20 53 49 41 4d | 20 4a 6f 75 72 6e 61 6c |.;; SIAM| Journal| |000001d0| 20 6f 6e 20 43 6f 6d 70 | 75 74 69 6e 67 2c 20 28 | on Comp|uting, (| |000001e0| 31 39 37 37 29 2c 20 70 | 70 2e 38 34 2d 38 35 2e |1977), p|p.84-85.| |000001f0| 0d 0d 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |..;;;;;;|;;;;;;;;| |00000200| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;| |00000210| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;| |00000220| 3b 3b 3b 3b 0d 0d 3b 3b | 3b 54 68 69 73 20 66 75 |;;;;..;;|;This fu| |00000230| 6e 63 74 69 6f 6e 20 52 | 53 41 20 65 6e 63 72 79 |nction R|SA encry| |00000240| 70 74 73 20 74 68 65 20 | 73 70 65 63 69 66 69 65 |pts the |specifie| |00000250| 64 20 73 74 72 69 6e 67 | 0d 28 64 65 66 75 6e 20 |d string|.(defun | |00000260| 52 53 41 2d 65 6e 63 6f | 64 65 2d 73 74 72 69 6e |RSA-enco|de-strin| |00000270| 67 20 28 69 6e 2d 73 74 | 72 69 6e 67 20 70 75 62 |g (in-st|ring pub| |00000280| 6c 69 63 2d 6b 65 79 29 | 0d 20 20 28 77 69 74 68 |lic-key)|. (with| |00000290| 2d 69 6e 70 75 74 2d 66 | 72 6f 6d 2d 73 74 72 69 |-input-f|rom-stri| |000002a0| 6e 67 20 28 69 6e 20 69 | 6e 2d 73 74 72 69 6e 67 |ng (in i|n-string| |000002b0| 29 0d 20 20 20 20 28 77 | 69 74 68 2d 6f 75 74 70 |). (w|ith-outp| |000002c0| 75 74 2d 74 6f 2d 73 74 | 72 69 6e 67 20 28 6f 75 |ut-to-st|ring (ou| |000002d0| 74 29 0d 20 20 20 20 20 | 20 28 52 53 41 2d 65 6e |t). | (RSA-en| |000002e0| 63 6f 64 65 2d 73 74 72 | 65 61 6d 20 69 6e 20 6f |code-str|eam in o| |000002f0| 75 74 20 70 75 62 6c 69 | 63 2d 6b 65 79 29 29 29 |ut publi|c-key)))| |00000300| 29 0d 20 20 20 20 20 20 | 20 20 0d 0d 3b 3b 3b 54 |). | ..;;;T| |00000310| 68 69 73 20 66 75 6e 63 | 74 69 6f 6e 20 52 53 41 |his func|tion RSA| |00000320| 20 64 65 63 72 79 70 74 | 73 20 74 68 65 20 73 70 | decrypt|s the sp| |00000330| 65 63 69 66 69 65 64 20 | 73 74 72 69 6e 67 0d 28 |ecified |string.(| |00000340| 64 65 66 75 6e 20 52 53 | 41 2d 64 65 63 6f 64 65 |defun RS|A-decode| |00000350| 2d 73 74 72 69 6e 67 20 | 28 69 6e 2d 73 74 72 69 |-string |(in-stri| |00000360| 6e 67 20 70 72 69 76 61 | 74 65 2d 6b 65 79 29 0d |ng priva|te-key).| |00000370| 20 20 28 77 69 74 68 2d | 69 6e 70 75 74 2d 66 72 | (with-|input-fr| |00000380| 6f 6d 2d 73 74 72 69 6e | 67 20 28 69 6e 20 69 6e |om-strin|g (in in| |00000390| 2d 73 74 72 69 6e 67 29 | 0d 20 20 20 20 28 77 69 |-string)|. (wi| |000003a0| 74 68 2d 6f 75 74 70 75 | 74 2d 74 6f 2d 73 74 72 |th-outpu|t-to-str| |000003b0| 69 6e 67 20 28 6f 75 74 | 29 0d 20 20 20 20 20 20 |ing (out|). | |000003c0| 28 52 53 41 2d 64 65 63 | 6f 64 65 2d 73 74 72 65 |(RSA-dec|ode-stre| |000003d0| 61 6d 20 69 6e 20 6f 75 | 74 20 70 72 69 76 61 74 |am in ou|t privat| |000003e0| 65 2d 6b 65 79 29 29 29 | 29 0d 0d 0d 3b 3b 3b 3b |e-key)))|)...;;;;| |000003f0| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;| |00000400| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;| |00000410| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 0d 0d |;;;;;;;;|;;;;;;..| |00000420| 3b 3b 3b 54 68 69 73 20 | 66 75 6e 63 74 69 6f 6e |;;;This |function| |00000430| 20 52 53 41 20 65 6e 63 | 72 79 70 74 73 20 74 68 | RSA enc|rypts th| |00000440| 65 20 73 70 65 63 69 66 | 69 65 64 20 66 69 6c 65 |e specif|ied file| |00000450| 0d 28 64 65 66 75 6e 20 | 52 53 41 2d 65 6e 63 6f |.(defun |RSA-enco| |00000460| 64 65 2d 66 69 6c 65 20 | 28 69 6e 2d 70 61 74 68 |de-file |(in-path| |00000470| 6e 61 6d 65 20 6f 75 74 | 2d 70 61 74 68 6e 61 6d |name out|-pathnam| |00000480| 65 20 70 75 62 6c 69 63 | 2d 6b 65 79 29 0d 20 20 |e public|-key). | |00000490| 28 77 69 74 68 2d 6f 70 | 65 6e 2d 66 69 6c 65 20 |(with-op|en-file | |000004a0| 28 69 6e 20 69 6e 2d 70 | 61 74 68 6e 61 6d 65 0d |(in in-p|athname.| |000004b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |000004c0| 20 20 20 20 20 20 3a 64 | 69 72 65 63 74 69 6f 6e | :d|irection| |000004d0| 20 3a 69 6e 70 75 74 29 | 0d 20 20 20 20 28 77 69 | :input)|. (wi| |000004e0| 74 68 2d 6f 70 65 6e 2d | 66 69 6c 65 20 28 6f 75 |th-open-|file (ou| |000004f0| 74 20 6f 75 74 2d 70 61 | 74 68 6e 61 6d 65 0d 20 |t out-pa|thname. | |00000500| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00000510| 20 20 20 20 20 20 20 20 | 3a 64 69 72 65 63 74 69 | |:directi| |00000520| 6f 6e 20 3a 6f 75 74 70 | 75 74 0d 20 20 20 20 20 |on :outp|ut. | |00000530| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00000540| 20 20 20 20 3a 69 66 2d | 65 78 69 73 74 73 20 3a | :if-|exists :| |00000550| 72 65 6e 61 6d 65 2d 61 | 6e 64 2d 64 65 6c 65 74 |rename-a|nd-delet| |00000560| 65 20 0d 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |e . | | |00000570| 20 20 20 20 20 20 20 20 | 20 20 20 20 3a 69 66 2d | | :if-| |00000580| 64 6f 65 73 2d 6e 6f 74 | 2d 65 78 69 73 74 20 3a |does-not|-exist :| |00000590| 63 72 65 61 74 65 29 0d | 20 20 20 20 20 20 28 52 |create).| (R| |000005a0| 53 41 2d 65 6e 63 6f 64 | 65 2d 73 74 72 65 61 6d |SA-encod|e-stream| |000005b0| 20 69 6e 20 6f 75 74 20 | 70 75 62 6c 69 63 2d 6b | in out |public-k| |000005c0| 65 79 29 29 29 29 0d 20 | 20 20 20 20 20 20 20 0d |ey)))). | .| |000005d0| 0d 3b 3b 3b 54 68 69 73 | 20 66 75 6e 63 74 69 6f |.;;;This| functio| |000005e0| 6e 20 52 53 41 20 64 65 | 63 72 79 70 74 73 20 74 |n RSA de|crypts t| |000005f0| 68 65 20 73 70 65 63 69 | 66 69 65 64 20 66 69 6c |he speci|fied fil| |00000600| 65 0d 28 64 65 66 75 6e | 20 52 53 41 2d 64 65 63 |e.(defun| RSA-dec| |00000610| 6f 64 65 2d 66 69 6c 65 | 20 28 69 6e 2d 70 61 74 |ode-file| (in-pat| |00000620| 68 6e 61 6d 65 20 6f 75 | 74 2d 70 61 74 68 6e 61 |hname ou|t-pathna| |00000630| 6d 65 20 70 72 69 76 61 | 74 65 2d 6b 65 79 29 0d |me priva|te-key).| |00000640| 20 20 28 77 69 74 68 2d | 6f 70 65 6e 2d 66 69 6c | (with-|open-fil| |00000650| 65 20 28 69 6e 20 69 6e | 2d 70 61 74 68 6e 61 6d |e (in in|-pathnam| |00000660| 65 0d 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |e. | | |00000670| 20 20 20 20 20 20 20 20 | 3a 64 69 72 65 63 74 69 | |:directi| |00000680| 6f 6e 20 3a 69 6e 70 75 | 74 29 0d 20 20 20 20 28 |on :inpu|t). (| |00000690| 77 69 74 68 2d 6f 70 65 | 6e 2d 66 69 6c 65 20 28 |with-ope|n-file (| |000006a0| 6f 75 74 20 6f 75 74 2d | 70 61 74 68 6e 61 6d 65 |out out-|pathname| |000006b0| 0d 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | | |000006c0| 20 20 20 20 20 20 20 20 | 20 20 3a 64 69 72 65 63 | | :direc| |000006d0| 74 69 6f 6e 20 3a 6f 75 | 74 70 75 74 0d 20 20 20 |tion :ou|tput. | |000006e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |000006f0| 20 20 20 20 20 20 3a 69 | 66 2d 65 78 69 73 74 73 | :i|f-exists| |00000700| 20 3a 72 65 6e 61 6d 65 | 2d 61 6e 64 2d 64 65 6c | :rename|-and-del| |00000710| 65 74 65 0d 20 20 20 20 | 20 20 20 20 20 20 20 20 |ete. | | |00000720| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 3a 69 66 | | :if| |00000730| 2d 64 6f 65 73 2d 6e 6f | 74 2d 65 78 69 73 74 20 |-does-no|t-exist | |00000740| 3a 63 72 65 61 74 65 29 | 0d 20 20 20 20 20 20 28 |:create)|. (| |00000750| 52 53 41 2d 64 65 63 6f | 64 65 2d 73 74 72 65 61 |RSA-deco|de-strea| |00000760| 6d 20 69 6e 20 6f 75 74 | 20 70 72 69 76 61 74 65 |m in out| private| |00000770| 2d 6b 65 79 29 29 29 29 | 0d 20 20 20 20 20 0d 3b |-key))))|. .;| |00000780| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;| |00000790| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;| |000007a0| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;| |000007b0| 3b 0d 0d 3b 3b 3b 54 68 | 69 73 20 66 75 6e 63 74 |;..;;;Th|is funct| |000007c0| 69 6f 6e 20 52 53 41 20 | 65 6e 63 72 79 70 74 73 |ion RSA |encrypts| |000007d0| 20 74 68 65 20 73 70 65 | 63 69 66 69 65 64 20 69 | the spe|cified i| |000007e0| 6e 70 75 74 20 73 74 72 | 65 61 6d 0d 3b 3b 3b 20 |nput str|eam.;;; | |000007f0| 61 6e 64 20 70 75 74 73 | 20 74 68 65 20 65 6e 63 |and puts| the enc| |00000800| 72 79 70 74 65 64 20 64 | 61 74 61 20 6f 6e 74 6f |rypted d|ata onto| |00000810| 20 74 68 65 20 73 70 65 | 63 69 66 69 65 64 20 6f | the spe|cified o| |00000820| 75 74 70 75 74 20 73 74 | 72 65 61 6d 0d 28 64 65 |utput st|ream.(de| |00000830| 66 75 6e 20 52 53 41 2d | 65 6e 63 6f 64 65 2d 73 |fun RSA-|encode-s| |00000840| 74 72 65 61 6d 20 28 69 | 6e 2d 73 74 72 65 61 6d |tream (i|n-stream| |00000850| 20 6f 75 74 2d 73 74 72 | 65 61 6d 20 70 75 62 6c | out-str|eam publ| |00000860| 69 63 2d 6b 65 79 29 0d | 20 20 28 6c 65 74 2a 20 |ic-key).| (let* | |00000870| 28 28 62 6c 6f 63 6b 2d | 73 69 7a 65 20 28 31 2d |((block-|size (1-| |00000880| 20 28 52 53 41 2d 62 6c | 6f 63 6b 2d 73 69 7a 65 | (RSA-bl|ock-size| |00000890| 20 70 75 62 6c 69 63 2d | 6b 65 79 29 29 29 0d 20 | public-|key))). | |000008a0| 20 20 20 20 20 20 20 20 | 28 62 6c 6f 63 6b 20 28 | |(block (| |000008b0| 6d 61 6b 65 2d 73 74 72 | 69 6e 67 20 62 6c 6f 63 |make-str|ing bloc| |000008c0| 6b 2d 73 69 7a 65 29 29 | 0d 20 20 20 20 20 20 20 |k-size))|. | |000008d0| 20 20 28 69 20 30 29 29 | 0d 20 20 20 20 28 6c 6f | (i 0))|. (lo| |000008e0| 6f 70 0d 20 20 20 20 20 | 20 28 77 68 65 6e 20 28 |op. | (when (| |000008f0| 6e 75 6c 6c 20 28 6c 69 | 73 74 65 6e 20 69 6e 2d |null (li|sten in-| |00000900| 73 74 72 65 61 6d 29 29 | 20 28 72 65 74 75 72 6e |stream))| (return| |00000910| 20 69 29 29 0d 20 20 20 | 20 20 20 28 69 6e 63 66 | i)). | (incf| |00000920| 20 69 29 0d 20 20 20 20 | 20 20 28 64 6f 74 69 6d | i). | (dotim| |00000930| 65 73 20 28 69 20 62 6c | 6f 63 6b 2d 73 69 7a 65 |es (i bl|ock-size| |00000940| 29 0d 20 20 20 20 20 20 | 20 20 28 73 65 74 66 20 |). | (setf | |00000950| 28 63 68 61 72 20 62 6c | 6f 63 6b 20 69 29 20 28 |(char bl|ock i) (| |00000960| 72 65 61 64 2d 63 68 61 | 72 20 69 6e 2d 73 74 72 |read-cha|r in-str| |00000970| 65 61 6d 20 6e 69 6c 20 | 28 63 6f 64 65 2d 63 68 |eam nil |(code-ch| |00000980| 61 72 20 30 29 29 29 29 | 0d 20 20 20 20 20 20 28 |ar 0))))|. (| |00000990| 70 72 69 6e 63 20 28 52 | 53 41 2d 65 6e 63 6f 64 |princ (R|SA-encod| |000009a0| 65 2d 62 6c 6f 63 6b 20 | 62 6c 6f 63 6b 20 70 75 |e-block |block pu| |000009b0| 62 6c 69 63 2d 6b 65 79 | 29 20 6f 75 74 2d 73 74 |blic-key|) out-st| |000009c0| 72 65 61 6d 29 29 29 29 | 0d 0d 0d 3b 3b 3b 54 68 |ream))))|...;;;Th| |000009d0| 69 73 20 66 75 6e 63 74 | 69 6f 6e 20 52 53 41 20 |is funct|ion RSA | |000009e0| 64 65 63 72 79 70 74 73 | 20 74 68 65 20 73 70 65 |decrypts| the spe| |000009f0| 63 69 66 69 65 64 20 69 | 6e 70 75 74 20 73 74 72 |cified i|nput str| |00000a00| 65 61 6d 0d 3b 3b 3b 20 | 61 6e 64 20 70 75 74 73 |eam.;;; |and puts| |00000a10| 20 74 68 65 20 64 65 63 | 72 79 70 74 65 64 20 64 | the dec|rypted d| |00000a20| 61 74 61 20 6f 6e 74 6f | 20 74 68 65 20 73 70 65 |ata onto| the spe| |00000a30| 63 69 66 69 65 64 20 6f | 75 74 70 75 74 20 73 74 |cified o|utput st| |00000a40| 72 65 61 6d 0d 28 64 65 | 66 75 6e 20 52 53 41 2d |ream.(de|fun RSA-| |00000a50| 64 65 63 6f 64 65 2d 73 | 74 72 65 61 6d 20 28 69 |decode-s|tream (i| |00000a60| 6e 2d 73 74 72 65 61 6d | 20 6f 75 74 2d 73 74 72 |n-stream| out-str| |00000a70| 65 61 6d 20 70 72 69 76 | 61 74 65 2d 6b 65 79 29 |eam priv|ate-key)| |00000a80| 0d 20 20 28 6c 65 74 2a | 20 28 28 62 6c 6f 63 6b |. (let*| ((block| |00000a90| 2d 73 69 7a 65 20 28 52 | 53 41 2d 62 6c 6f 63 6b |-size (R|SA-block| |00000aa0| 2d 73 69 7a 65 20 70 72 | 69 76 61 74 65 2d 6b 65 |-size pr|ivate-ke| |00000ab0| 79 29 29 0d 20 20 20 20 | 20 20 20 20 20 28 62 6c |y)). | (bl| |00000ac0| 6f 63 6b 20 28 6d 61 6b | 65 2d 73 74 72 69 6e 67 |ock (mak|e-string| |00000ad0| 20 62 6c 6f 63 6b 2d 73 | 69 7a 65 29 29 0d 20 20 | block-s|ize)). | |00000ae0| 20 20 20 20 20 20 20 28 | 69 20 30 29 29 0d 20 20 | (|i 0)). | |00000af0| 20 20 28 6c 6f 6f 70 0d | 20 20 20 20 20 20 28 77 | (loop.| (w| |00000b00| 68 65 6e 20 28 6e 75 6c | 6c 20 28 6c 69 73 74 65 |hen (nul|l (liste| |00000b10| 6e 20 69 6e 2d 73 74 72 | 65 61 6d 29 29 20 28 72 |n in-str|eam)) (r| |00000b20| 65 74 75 72 6e 20 69 29 | 29 0d 20 20 20 20 20 20 |eturn i)|). | |00000b30| 28 69 6e 63 66 20 69 29 | 0d 20 20 20 20 20 20 28 |(incf i)|. (| |00000b40| 64 6f 74 69 6d 65 73 20 | 28 69 20 62 6c 6f 63 6b |dotimes |(i block| |00000b50| 2d 73 69 7a 65 29 0d 20 | 20 20 20 20 20 20 20 28 |-size). | (| |00000b60| 73 65 74 66 20 28 63 68 | 61 72 20 62 6c 6f 63 6b |setf (ch|ar block| |00000b70| 20 69 29 20 28 72 65 61 | 64 2d 63 68 61 72 20 69 | i) (rea|d-char i| |00000b80| 6e 2d 73 74 72 65 61 6d | 20 74 29 29 29 0d 20 20 |n-stream| t))). | |00000b90| 20 20 20 20 28 70 72 69 | 6e 63 20 28 52 53 41 2d | (pri|nc (RSA-| |00000ba0| 64 65 63 6f 64 65 2d 62 | 6c 6f 63 6b 20 62 6c 6f |decode-b|lock blo| |00000bb0| 63 6b 20 70 72 69 76 61 | 74 65 2d 6b 65 79 29 20 |ck priva|te-key) | |00000bc0| 6f 75 74 2d 73 74 72 65 | 61 6d 29 29 29 29 0d 0d |out-stre|am))))..| |00000bd0| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;| |00000be0| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;| |00000bf0| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;| |00000c00| 3b 3b 0d 0d 3b 3b 3b 54 | 68 69 73 20 66 75 6e 63 |;;..;;;T|his func| |00000c10| 74 69 6f 6e 20 52 53 41 | 20 65 6e 63 72 79 70 74 |tion RSA| encrypt| |00000c20| 73 20 61 20 73 69 6e 67 | 6c 65 20 62 6c 6f 63 6b |s a sing|le block| |00000c30| 20 6f 66 20 6d 65 73 73 | 61 67 65 0d 28 64 65 66 | of mess|age.(def| |00000c40| 75 6e 20 52 53 41 2d 65 | 6e 63 6f 64 65 2d 62 6c |un RSA-e|ncode-bl| |00000c50| 6f 63 6b 20 28 73 74 72 | 69 6e 67 20 70 75 62 6c |ock (str|ing publ| |00000c60| 69 63 2d 6b 65 79 29 0d | 20 20 28 6c 65 74 20 28 |ic-key).| (let (| |00000c70| 28 62 6c 6f 63 6b 2d 73 | 69 7a 65 20 28 52 53 41 |(block-s|ize (RSA| |00000c80| 2d 62 6c 6f 63 6b 2d 73 | 69 7a 65 20 70 75 62 6c |-block-s|ize publ| |00000c90| 69 63 2d 6b 65 79 29 29 | 29 0d 20 20 20 20 28 75 |ic-key))|). (u| |00000ca0| 6e 6c 65 73 73 20 28 3c | 20 28 6c 65 6e 67 74 68 |nless (<| (length| |00000cb0| 20 73 74 72 69 6e 67 29 | 20 62 6c 6f 63 6b 2d 73 | string)| block-s| |00000cc0| 69 7a 65 29 0d 20 20 20 | 20 20 20 28 65 72 72 6f |ize). | (erro| |00000cd0| 72 20 22 73 74 72 69 6e | 67 20 74 6f 6f 20 6c 6f |r "strin|g too lo| |00000ce0| 6e 67 20 7e 61 20 3e 3d | 20 7e 61 20 74 6f 20 62 |ng ~a >=| ~a to b| |00000cf0| 65 20 63 6f 72 72 65 63 | 74 6c 79 20 65 6e 63 6f |e correc|tly enco| |00000d00| 64 65 64 22 20 28 6c 65 | 6e 67 74 68 20 73 74 72 |ded" (le|ngth str| |00000d10| 69 6e 67 29 20 62 6c 6f | 63 6b 2d 73 69 7a 65 29 |ing) blo|ck-size)| |00000d20| 29 0d 20 20 20 20 28 69 | 6e 74 2d 74 6f 2d 73 74 |). (i|nt-to-st| |00000d30| 72 69 6e 67 20 28 65 78 | 70 74 2d 6d 6f 64 20 28 |ring (ex|pt-mod (| |00000d40| 73 74 72 69 6e 67 2d 74 | 6f 2d 69 6e 74 20 73 74 |string-t|o-int st| |00000d50| 72 69 6e 67 29 20 28 73 | 65 63 6f 6e 64 20 70 75 |ring) (s|econd pu| |00000d60| 62 6c 69 63 2d 6b 65 79 | 29 20 28 66 69 72 73 74 |blic-key|) (first| |00000d70| 20 70 75 62 6c 69 63 2d | 6b 65 79 29 29 0d 20 20 | public-|key)). | |00000d80| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00000d90| 20 62 6c 6f 63 6b 2d 73 | 69 7a 65 29 29 29 0d 0d | block-s|ize)))..| |00000da0| 3b 3b 3b 54 68 69 73 20 | 66 75 6e 63 74 69 6f 6e |;;;This |function| |00000db0| 20 52 53 41 20 64 65 63 | 72 79 70 74 73 20 61 20 | RSA dec|rypts a | |00000dc0| 73 69 6e 67 6c 65 20 62 | 6c 6f 63 6b 20 6f 66 20 |single b|lock of | |00000dd0| 6d 65 73 73 61 67 65 0d | 28 64 65 66 75 6e 20 52 |message.|(defun R| |00000de0| 53 41 2d 64 65 63 6f 64 | 65 2d 62 6c 6f 63 6b 20 |SA-decod|e-block | |00000df0| 28 73 74 72 69 6e 67 20 | 70 72 69 76 61 74 65 2d |(string |private-| |00000e00| 6b 65 79 29 0d 20 28 69 | 6e 74 2d 74 6f 2d 73 74 |key). (i|nt-to-st| |00000e10| 72 69 6e 67 20 28 65 78 | 70 74 2d 6d 6f 64 20 28 |ring (ex|pt-mod (| |00000e20| 73 74 72 69 6e 67 2d 74 | 6f 2d 69 6e 74 20 73 74 |string-t|o-int st| |00000e30| 72 69 6e 67 29 20 28 73 | 65 63 6f 6e 64 20 70 72 |ring) (s|econd pr| |00000e40| 69 76 61 74 65 2d 6b 65 | 79 29 20 28 66 69 72 73 |ivate-ke|y) (firs| |00000e50| 74 20 70 72 69 76 61 74 | 65 2d 6b 65 79 29 29 29 |t privat|e-key)))| |00000e60| 29 0d 0d 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |)..;;;;;|;;;;;;;;| |00000e70| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;| |00000e80| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;| |00000e90| 3b 3b 3b 3b 3b 0d 0d 3b | 3b 3b 52 65 74 75 72 6e |;;;;;..;|;;Return| |00000ea0| 73 20 74 68 65 20 65 6e | 63 72 79 70 74 69 6f 6e |s the en|cryption| |00000eb0| 20 62 6c 6f 63 6b 20 73 | 69 7a 65 20 69 6e 20 63 | block s|ize in c| |00000ec0| 68 61 72 61 63 74 65 72 | 20 66 6f 72 20 74 68 65 |haracter| for the| |00000ed0| 20 73 70 65 63 69 66 69 | 65 64 20 6b 65 79 0d 28 | specifi|ed key.(| |00000ee0| 64 65 66 75 6e 20 52 53 | 41 2d 62 6c 6f 63 6b 2d |defun RS|A-block-| |00000ef0| 73 69 7a 65 20 28 6b 65 | 79 29 0d 20 20 28 70 72 |size (ke|y). (pr| |00000f00| 6f 67 31 20 28 63 65 69 | 6c 69 6e 67 20 28 69 6e |og1 (cei|ling (in| |00000f10| 74 65 67 65 72 2d 6c 65 | 6e 67 74 68 20 28 66 69 |teger-le|ngth (fi| |00000f20| 72 73 74 20 6b 65 79 29 | 29 20 38 29 29 29 0d 0d |rst key)|) 8)))..| |00000f30| 0d 3b 3b 3b 47 69 76 65 | 20 61 20 70 61 69 72 20 |.;;;Give| a pair | |00000f40| 6f 66 20 70 72 69 6d 65 | 73 20 74 68 69 73 20 66 |of prime|s this f| |00000f50| 75 6e 63 74 69 6f 6e 20 | 67 65 6e 65 72 61 74 65 |unction |generate| |00000f60| 73 20 61 6e 20 52 53 41 | 20 6b 65 79 20 70 61 69 |s an RSA| key pai| |00000f70| 72 20 66 72 6f 6d 20 74 | 68 65 6d 2e 0d 3b 3b 3b |r from t|hem..;;;| |00000f80| 49 74 20 72 65 74 75 72 | 6e 73 20 32 20 76 61 6c |It retur|ns 2 val| |00000f90| 75 65 73 2c 20 74 68 65 | 20 70 75 62 6c 69 63 20 |ues, the| public | |00000fa0| 6b 65 79 20 61 6e 64 20 | 70 72 69 76 61 74 65 20 |key and |private | |00000fb0| 6b 65 79 2e 0d 3b 3b 3b | 45 61 63 68 20 6b 65 79 |key..;;;|Each key| |00000fc0| 20 69 73 20 61 20 6c 69 | 73 74 20 6f 66 20 32 20 | is a li|st of 2 | |00000fd0| 6e 75 6d 62 65 72 73 20 | 2d 20 74 68 65 20 32 6e |numbers |- the 2n| |00000fe0| 64 20 6e 75 6d 62 65 72 | 20 69 73 20 61 63 74 75 |d number| is actu| |00000ff0| 61 6c 6c 79 20 74 68 65 | 20 6b 65 79 2e 0d 28 64 |ally the| key..(d| |00001000| 65 66 75 6e 20 52 53 41 | 2d 67 65 6e 2d 6b 65 79 |efun RSA|-gen-key| |00001010| 73 20 28 70 72 69 6d 65 | 2d 31 20 70 72 69 6d 65 |s (prime|-1 prime| |00001020| 2d 32 29 0d 20 20 28 6c | 65 74 2a 20 28 28 70 20 |-2). (l|et* ((p | |00001030| 70 72 69 6d 65 2d 31 29 | 0d 20 20 20 20 20 20 20 |prime-1)|. | |00001040| 20 20 28 71 20 70 72 69 | 6d 65 2d 32 29 0d 20 20 | (q pri|me-2). | |00001050| 20 20 20 20 20 20 20 28 | 70 68 69 20 28 2a 20 28 | (|phi (* (| |00001060| 31 2d 20 70 29 20 28 31 | 2d 20 71 29 29 29 0d 20 |1- p) (1|- q))). | |00001070| 20 20 20 20 20 20 20 20 | 28 70 72 69 2d 6b 65 79 | |(pri-key| |00001080| 20 28 52 53 41 2d 63 68 | 6f 6f 73 65 2d 70 72 69 | (RSA-ch|oose-pri| |00001090| 76 61 74 65 2d 6b 65 79 | 20 70 20 71 20 70 68 69 |vate-key| p q phi| |000010a0| 29 29 0d 20 20 20 20 20 | 20 20 20 20 28 70 75 62 |)). | (pub| |000010b0| 2d 6b 65 79 20 28 6d 75 | 6c 74 69 70 6c 69 63 61 |-key (mu|ltiplica| |000010c0| 74 69 76 65 2d 69 6e 76 | 65 72 73 65 20 70 72 69 |tive-inv|erse pri| |000010d0| 2d 6b 65 79 20 70 68 69 | 29 29 0d 20 20 20 20 20 |-key phi|)). | |000010e0| 20 20 20 20 28 6d 73 67 | 2d 73 69 7a 65 20 28 2a | (msg|-size (*| |000010f0| 20 70 20 71 29 29 29 0d | 20 20 20 20 28 76 61 6c | p q))).| (val| |00001100| 75 65 73 20 28 6c 69 73 | 74 20 6d 73 67 2d 73 69 |ues (lis|t msg-si| |00001110| 7a 65 20 70 75 62 2d 6b | 65 79 29 20 28 6c 69 73 |ze pub-k|ey) (lis| |00001120| 74 20 6d 73 67 2d 73 69 | 7a 65 20 70 72 69 2d 6b |t msg-si|ze pri-k| |00001130| 65 79 29 29 29 29 0d 0d | 3b 3b 3b 43 68 6f 6f 73 |ey))))..|;;;Choos| |00001140| 65 20 61 20 70 72 69 76 | 61 74 65 20 6b 65 79 20 |e a priv|ate key | |00001150| 66 6f 72 20 70 2c 71 2c | 70 68 69 0d 28 64 65 66 |for p,q,|phi.(def| |00001160| 75 6e 20 52 53 41 2d 63 | 68 6f 6f 73 65 2d 70 72 |un RSA-c|hoose-pr| |00001170| 69 76 61 74 65 2d 6b 65 | 79 20 28 70 20 71 20 70 |ivate-ke|y (p q p| |00001180| 68 69 29 0d 20 20 28 64 | 6f 20 28 28 64 20 28 2b |hi). (d|o ((d (+| |00001190| 20 28 6d 61 78 20 70 20 | 71 29 20 32 29 20 28 2b | (max p |q) 2) (+| |000011a0| 20 64 20 32 29 29 29 0d | 20 20 20 20 20 20 28 28 | d 2))).| ((| |000011b0| 65 71 20 28 67 63 64 20 | 64 20 70 68 69 29 20 31 |eq (gcd |d phi) 1| |000011c0| 29 20 64 29 29 29 0d 0d | 0d 3b 3b 3b 3b 3b 3b 3b |) d)))..|.;;;;;;;| |000011d0| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;| |000011e0| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;| |000011f0| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 0d 3b 3b 3b 53 |;;;;;;;;|;;;.;;;S| |00001200| 6f 6c 6f 76 61 79 20 26 | 20 53 74 72 61 73 73 65 |olovay &| Strasse| |00001210| 6e 20 70 72 69 6d 65 20 | 74 65 73 74 2e 0d 0d 3b |n prime |test...;| |00001220| 3b 67 65 6e 65 72 61 74 | 65 73 20 61 20 70 72 69 |;generat|es a pri| |00001230| 6d 65 20 6f 66 20 74 68 | 65 20 73 70 65 63 69 66 |me of th|e specif| |00001240| 69 65 64 20 6e 75 6d 62 | 65 72 20 6f 66 20 64 69 |ied numb|er of di| |00001250| 67 69 74 73 0d 28 64 65 | 66 75 6e 20 67 65 6e 2d |gits.(de|fun gen-| |00001260| 70 72 69 6d 65 20 28 64 | 69 67 69 74 73 20 26 6b |prime (d|igits &k| |00001270| 65 79 20 28 63 65 72 74 | 61 69 6e 74 79 20 32 30 |ey (cert|ainty 20| |00001280| 29 29 0d 20 20 28 6c 65 | 74 2a 20 28 28 74 65 6e |)). (le|t* ((ten| |00001290| 2d 65 78 70 74 2d 64 69 | 67 69 74 73 2d 31 20 28 |-expt-di|gits-1 (| |000012a0| 65 78 70 74 20 31 30 20 | 28 31 2d 20 64 69 67 69 |expt 10 |(1- digi| |000012b0| 74 73 29 29 29 0d 20 20 | 20 20 20 20 20 20 20 28 |ts))). | (| |000012c0| 74 65 6e 2d 65 78 70 74 | 2d 64 69 67 69 74 73 20 |ten-expt|-digits | |000012d0| 20 20 28 2a 20 31 30 20 | 74 65 6e 2d 65 78 70 74 | (* 10 |ten-expt| |000012e0| 2d 64 69 67 69 74 73 2d | 31 29 29 0d 20 20 20 20 |-digits-|1)). | |000012f0| 20 20 20 20 20 28 6e 20 | 20 20 20 20 20 20 20 20 | (n | | |00001300| 20 20 20 20 20 20 20 20 | 28 2b 20 74 65 6e 2d 65 | |(+ ten-e| |00001310| 78 70 74 2d 64 69 67 69 | 74 73 2d 31 20 28 72 61 |xpt-digi|ts-1 (ra| |00001320| 6e 64 6f 6d 20 28 2a 20 | 39 20 74 65 6e 2d 65 78 |ndom (* |9 ten-ex| |00001330| 70 74 2d 64 69 67 69 74 | 73 2d 31 29 29 29 29 29 |pt-digit|s-1)))))| |00001340| 0d 20 20 20 20 28 77 68 | 65 6e 20 28 65 76 65 6e |. (wh|en (even| |00001350| 70 20 6e 29 20 28 69 6e | 63 66 20 6e 29 29 0d 20 |p n) (in|cf n)). | |00001360| 20 20 20 28 64 6f 74 69 | 6d 65 73 20 28 69 20 28 | (doti|mes (i (| |00001370| 63 65 69 6c 69 6e 67 20 | 28 2d 20 74 65 6e 2d 65 |ceiling |(- ten-e| |00001380| 78 70 74 2d 64 69 67 69 | 74 73 20 6e 29 20 32 29 |xpt-digi|ts n) 2)| |00001390| 20 28 65 72 72 6f 72 20 | 22 6e 6f 20 7e 61 20 64 | (error |"no ~a d| |000013a0| 69 67 69 74 20 70 72 69 | 6d 65 73 20 66 6f 75 6e |igit pri|mes foun| |000013b0| 64 2e 22 20 64 69 67 69 | 74 73 29 29 0d 20 20 20 |d." digi|ts)). | |000013c0| 20 20 20 28 77 68 65 6e | 20 28 70 72 69 6d 65 2d | (when| (prime-| |000013d0| 70 20 6e 20 63 65 72 74 | 61 69 6e 74 79 29 20 28 |p n cert|ainty) (| |000013e0| 72 65 74 75 72 6e 2d 66 | 72 6f 6d 20 67 65 6e 2d |return-f|rom gen-| |000013f0| 70 72 69 6d 65 20 6e 29 | 29 0d 20 20 20 20 20 20 |prime n)|). | |00001400| 28 69 6e 63 66 20 6e 20 | 32 29 29 29 29 0d 0d 3b |(incf n |2))))..;| |00001410| 3b 3b 41 20 6c 69 73 74 | 20 6f 66 20 74 68 65 20 |;;A list| of the | |00001420| 66 69 72 73 74 20 31 30 | 30 20 70 72 69 6d 65 73 |first 10|0 primes| |00001430| 0d 28 64 65 66 63 6f 6e | 73 74 61 6e 74 20 2a 66 |.(defcon|stant *f| |00001440| 69 72 73 74 2d 70 72 69 | 6d 65 73 2a 0d 20 20 27 |irst-pri|mes*. '| |00001450| 28 31 20 32 20 33 20 35 | 20 37 20 31 31 20 31 33 |(1 2 3 5| 7 11 13| |00001460| 20 31 37 20 31 39 20 32 | 33 20 32 39 20 33 31 20 | 17 19 2|3 29 31 | |00001470| 33 37 20 34 31 20 34 33 | 20 34 37 20 35 33 20 35 |37 41 43| 47 53 5| |00001480| 39 20 36 31 20 36 37 20 | 37 31 20 37 33 20 37 39 |9 61 67 |71 73 79| |00001490| 20 38 33 20 38 39 20 39 | 37 0d 20 20 20 20 31 30 | 83 89 9|7. 10| |000014a0| 31 20 31 30 33 20 31 30 | 37 20 31 30 39 20 31 31 |1 103 10|7 109 11| |000014b0| 33 20 31 32 37 20 31 33 | 31 20 31 33 37 20 31 33 |3 127 13|1 137 13| |000014c0| 39 20 31 34 39 20 31 35 | 31 20 31 35 37 20 31 36 |9 149 15|1 157 16| |000014d0| 33 20 31 36 37 20 31 37 | 33 20 31 37 39 20 31 38 |3 167 17|3 179 18| |000014e0| 31 20 31 39 31 20 31 39 | 33 20 31 39 37 0d 20 20 |1 191 19|3 197. | |000014f0| 20 20 31 39 39 20 32 31 | 31 20 32 32 33 20 32 32 | 199 21|1 223 22| |00001500| 37 20 32 32 39 20 32 33 | 33 20 32 33 39 20 32 34 |7 229 23|3 239 24| |00001510| 31 20 32 35 31 20 32 35 | 37 20 32 36 33 20 32 36 |1 251 25|7 263 26| |00001520| 39 20 32 37 31 20 32 37 | 37 20 32 38 31 20 32 38 |9 271 27|7 281 28| |00001530| 33 20 32 39 33 20 33 30 | 37 20 33 31 31 20 33 31 |3 293 30|7 311 31| |00001540| 33 0d 20 20 20 20 33 31 | 37 20 33 33 31 20 33 33 |3. 31|7 331 33| |00001550| 37 20 33 34 37 20 33 34 | 39 20 33 35 33 20 33 35 |7 347 34|9 353 35| |00001560| 39 20 33 36 37 20 33 37 | 33 20 33 37 39 20 33 38 |9 367 37|3 379 38| |00001570| 33 20 33 38 39 20 33 39 | 37 20 34 30 31 20 34 30 |3 389 39|7 401 40| |00001580| 39 20 34 31 39 20 34 32 | 31 20 34 33 31 20 34 33 |9 419 42|1 431 43| |00001590| 33 20 34 33 39 0d 20 20 | 20 20 34 34 33 20 34 34 |3 439. | 443 44| |000015a0| 39 20 34 35 37 20 34 36 | 31 20 34 36 33 20 34 36 |9 457 46|1 463 46| |000015b0| 37 20 34 37 39 20 34 38 | 37 20 34 39 31 20 34 39 |7 479 48|7 491 49| |000015c0| 39 20 35 30 33 20 35 30 | 39 20 35 32 31 20 35 32 |9 503 50|9 521 52| |000015d0| 33 29 29 0d 0d 3b 3b 3b | 52 65 74 75 72 6e 73 20 |3))..;;;|Returns | |000015e0| 77 68 65 74 68 65 72 20 | 6e 20 69 73 20 70 72 69 |whether |n is pri| |000015f0| 6d 65 20 77 69 74 68 20 | 61 20 63 65 72 74 61 69 |me with |a certai| |00001600| 6e 74 79 20 6f 66 20 31 | 20 2d 20 31 2f 32 5e 74 |nty of 1| - 1/2^t| |00001610| 65 73 74 2d 63 6f 75 6e | 74 2e 0d 3b 3b 3b 49 74 |est-coun|t..;;;It| |00001620| 20 75 73 65 73 20 61 6e | 20 69 6d 70 72 6f 76 65 | uses an| improve| |00001630| 64 20 76 65 72 73 69 6f | 6e 20 6f 66 20 74 68 65 |d versio|n of the| |00001640| 20 6f 72 69 67 69 6e 61 | 6c 20 53 6f 6c 6f 76 61 | origina|l Solova| |00001650| 79 20 26 20 53 74 72 61 | 73 73 65 6e 0d 3b 3b 3b |y & Stra|ssen.;;;| |00001660| 70 72 69 6d 65 20 74 65 | 73 74 2e 20 42 61 73 65 |prime te|st. Base| |00001670| 64 20 6f 6e 20 45 72 69 | 63 20 42 61 63 68 27 73 |d on Eri|c Bach's| |00001680| 20 73 75 67 67 65 73 74 | 69 6f 6e 20 6f 66 20 75 | suggest|ion of u| |00001690| 73 69 6e 67 20 61 20 73 | 65 71 75 65 6e 63 65 20 |sing a s|equence | |000016a0| 0d 3b 3b 3b 6f 66 20 70 | 72 69 6d 65 73 20 72 61 |.;;;of p|rimes ra| |000016b0| 74 68 65 72 20 74 68 61 | 6e 20 72 61 6e 64 6f 6d |ther tha|n random| |000016c0| 20 6e 75 6d 62 65 72 73 | 2e 0d 3b 3b 3b 20 6d 61 | numbers|..;;; ma| |000016d0| 6b 65 20 73 75 72 65 20 | 6e 75 6d 5f 74 65 73 74 |ke sure |num_test| |000016e0| 73 20 3c 3d 20 74 68 65 | 20 6e 75 6d 62 65 72 20 |s <= the| number | |000016f0| 6f 66 20 70 72 69 6d 65 | 73 20 69 6e 20 2a 66 69 |of prime|s in *fi| |00001700| 72 73 74 5f 70 72 69 6d | 65 73 2a 0d 28 64 65 66 |rst_prim|es*.(def| |00001710| 75 6e 20 70 72 69 6d 65 | 2d 70 20 28 6e 20 74 65 |un prime|-p (n te| |00001720| 73 74 2d 63 6f 75 6e 74 | 29 0d 20 20 28 75 6e 6c |st-count|). (unl| |00001730| 65 73 73 20 28 3c 3d 20 | 74 65 73 74 2d 63 6f 75 |ess (<= |test-cou| |00001740| 6e 74 20 28 6c 65 6e 67 | 74 68 20 2a 66 69 72 73 |nt (leng|th *firs| |00001750| 74 2d 70 72 69 6d 65 73 | 2a 29 29 0d 20 20 20 20 |t-primes|*)). | |00001760| 28 65 72 72 6f 72 20 22 | 74 65 73 74 2d 63 6f 75 |(error "|test-cou| |00001770| 6e 74 20 6d 75 73 74 20 | 62 65 20 6c 65 73 73 20 |nt must |be less | |00001780| 74 68 61 6e 20 7e 61 2e | 22 20 28 6c 65 6e 67 74 |than ~a.|" (lengt| |00001790| 68 20 2a 66 69 72 73 74 | 2d 70 72 69 6d 65 73 2a |h *first|-primes*| |000017a0| 29 29 29 0d 20 20 28 77 | 68 65 6e 20 28 6f 64 64 |))). (w|hen (odd| |000017b0| 70 20 6e 29 0d 20 20 20 | 20 28 6c 65 74 20 28 28 |p n). | (let ((| |000017c0| 70 72 69 6d 65 2d 6c 69 | 73 74 20 2a 66 69 72 73 |prime-li|st *firs| |000017d0| 74 2d 70 72 69 6d 65 73 | 2a 29 0d 20 20 20 20 20 |t-primes|*). | |000017e0| 20 20 20 20 20 28 61 20 | 6e 69 6c 29 29 0d 20 20 | (a |nil)). | |000017f0| 20 20 20 20 28 64 6f 74 | 69 6d 65 73 20 28 69 20 | (dot|imes (i | |00001800| 74 65 73 74 2d 63 6f 75 | 6e 74 20 6e 29 0d 20 20 |test-cou|nt n). | |00001810| 20 20 20 20 20 20 28 73 | 65 74 66 20 61 20 28 70 | (s|etf a (p| |00001820| 6f 70 20 70 72 69 6d 65 | 2d 6c 69 73 74 29 29 0d |op prime|-list)).| |00001830| 20 20 20 20 20 20 20 20 | 28 63 6f 6e 64 0d 20 20 | |(cond. | |00001840| 20 20 20 20 20 20 20 28 | 28 3e 3d 20 61 20 6e 29 | (|(>= a n)| |00001850| 20 20 20 20 20 20 20 20 | 28 72 65 74 75 72 6e 20 | |(return | |00001860| 6e 29 29 0d 20 20 20 20 | 20 20 20 20 20 28 28 3e |n)). | ((>| |00001870| 20 28 67 63 64 20 61 20 | 6e 29 20 31 29 20 28 72 | (gcd a |n) 1) (r| |00001880| 65 74 75 72 6e 20 6e 69 | 6c 29 29 0d 20 20 20 20 |eturn ni|l)). | |00001890| 20 20 20 20 20 28 28 2f | 3d 20 28 6d 6f 64 20 28 | ((/|= (mod (| |000018a0| 6a 61 63 6f 62 69 20 61 | 20 6e 29 20 6e 29 20 28 |jacobi a| n) n) (| |000018b0| 65 78 70 74 2d 6d 6f 64 | 20 61 20 28 2f 20 28 31 |expt-mod| a (/ (1| |000018c0| 2d 20 6e 29 20 32 29 20 | 6e 29 29 20 28 72 65 74 |- n) 2) |n)) (ret| |000018d0| 75 72 6e 20 6e 69 6c 29 | 29 29 29 29 29 29 0d 0d |urn nil)|))))))..| |000018e0| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;| |000018f0| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;| |00001900| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;| |00001910| 3b 3b 0d 3b 3b 3b 20 6d | 69 73 63 20 75 74 69 6c |;;.;;; m|isc util| |00001920| 73 0d 0d 3b 3b 52 65 74 | 75 72 6e 73 20 62 61 73 |s..;;Ret|urns bas| |00001930| 65 5e 70 6f 77 65 72 20 | 6d 6f 64 20 6d 6f 64 75 |e^power |mod modu| |00001940| 6c 75 73 0d 3b 3b 73 69 | 67 6e 69 66 69 63 61 6e |lus.;;si|gnifican| |00001950| 74 6c 79 20 6d 6f 72 65 | 20 65 66 66 69 63 69 65 |tly more| efficie| |00001960| 6e 74 20 74 68 61 6e 20 | 28 6d 6f 64 20 28 65 78 |nt than |(mod (ex| |00001970| 70 74 20 62 61 73 65 20 | 70 6f 77 65 72 29 20 6d |pt base |power) m| |00001980| 6f 64 75 6c 75 73 29 0d | 28 64 65 66 75 6e 20 65 |odulus).|(defun e| |00001990| 78 70 74 2d 6d 6f 64 20 | 28 62 61 73 65 20 70 6f |xpt-mod |(base po| |000019a0| 77 65 72 20 6d 6f 64 75 | 6c 75 73 29 0d 20 20 28 |wer modu|lus). (| |000019b0| 69 66 20 28 7a 65 72 6f | 70 20 70 6f 77 65 72 29 |if (zero|p power)| |000019c0| 0d 20 20 20 20 31 0d 20 | 20 20 20 28 6c 65 74 20 |. 1. | (let | |000019d0| 28 28 69 20 28 31 2d 20 | 28 69 6e 74 65 67 65 72 |((i (1- |(integer| |000019e0| 2d 6c 65 6e 67 74 68 20 | 70 6f 77 65 72 29 29 29 |-length |power)))| |000019f0| 0d 20 20 20 20 20 20 20 | 20 20 20 28 72 65 73 75 |. | (resu| |00001a00| 6c 74 20 31 29 29 0d 20 | 20 20 20 20 20 28 6c 6f |lt 1)). | (lo| |00001a10| 6f 70 0d 20 20 20 20 20 | 20 20 20 28 77 68 65 6e |op. | (when| |00001a20| 20 28 6c 6f 67 62 69 74 | 70 20 69 20 70 6f 77 65 | (logbit|p i powe| |00001a30| 72 29 0d 20 20 20 20 20 | 20 20 20 20 20 28 73 65 |r). | (se| |00001a40| 74 66 20 72 65 73 75 6c | 74 20 28 6d 6f 64 20 28 |tf resul|t (mod (| |00001a50| 2a 20 72 65 73 75 6c 74 | 20 62 61 73 65 29 20 6d |* result| base) m| |00001a60| 6f 64 75 6c 75 73 29 29 | 29 0d 20 20 20 20 20 20 |odulus))|). | |00001a70| 20 20 28 77 68 65 6e 20 | 28 7a 65 72 6f 70 20 69 | (when |(zerop i| |00001a80| 29 20 28 72 65 74 75 72 | 6e 20 72 65 73 75 6c 74 |) (retur|n result| |00001a90| 29 29 0d 20 20 20 20 20 | 20 20 20 28 73 65 74 66 |)). | (setf| |00001aa0| 20 72 65 73 75 6c 74 20 | 28 6d 6f 64 20 28 2a 20 | result |(mod (* | |00001ab0| 72 65 73 75 6c 74 20 72 | 65 73 75 6c 74 29 20 6d |result r|esult) m| |00001ac0| 6f 64 75 6c 75 73 29 29 | 0d 20 20 20 20 20 20 20 |odulus))|. | |00001ad0| 20 28 64 65 63 66 20 69 | 29 29 29 29 29 0d 0d 0d | (decf i|)))))...| |00001ae0| 3b 3b 3b 52 65 74 75 72 | 6e 73 20 74 68 65 20 76 |;;;Retur|ns the v| |00001af0| 61 6c 75 65 20 6f 66 20 | 74 68 65 20 6a 61 63 6f |alue of |the jaco| |00001b00| 62 69 20 73 79 6d 62 6f | 6c 20 28 6d 2f 6e 29 0d |bi symbo|l (m/n).| |00001b10| 28 64 65 66 75 6e 20 6a | 61 63 6f 62 69 20 28 6d |(defun j|acobi (m| |00001b20| 20 6e 29 0d 20 28 63 6f | 6e 64 0d 20 20 28 28 3d | n). (co|nd. ((=| |00001b30| 20 6d 20 31 29 20 31 29 | 0d 20 20 28 28 6f 72 20 | m 1) 1)|. ((or | |00001b40| 28 7a 65 72 6f 70 20 6d | 29 20 28 65 76 65 6e 70 |(zerop m|) (evenp| |00001b50| 20 6e 29 29 20 30 29 0d | 20 20 28 28 65 76 65 6e | n)) 0).| ((even| |00001b60| 70 20 6d 29 20 28 2a 20 | 28 69 66 20 28 2f 3d 20 |p m) (* |(if (/= | |00001b70| 28 6d 6f 64 20 6e 20 38 | 29 20 33 20 35 29 20 31 |(mod n 8|) 3 5) 1| |00001b80| 20 2d 31 29 20 28 6a 61 | 63 6f 62 69 20 28 2f 20 | -1) (ja|cobi (/ | |00001b90| 6d 20 32 29 20 6e 29 29 | 29 0d 20 20 28 74 20 28 |m 2) n))|). (t (| |00001ba0| 2a 20 28 69 66 20 28 3d | 20 28 6d 6f 64 20 6d 20 |* (if (=| (mod m | |00001bb0| 34 29 20 28 6d 6f 64 20 | 6e 20 34 29 20 33 29 20 |4) (mod |n 4) 3) | |00001bc0| 2d 31 20 31 29 20 28 6a | 61 63 6f 62 69 20 28 6d |-1 1) (j|acobi (m| |00001bd0| 6f 64 20 6e 20 6d 29 20 | 6d 29 29 29 29 29 0d 0d |od n m) |m)))))..| |00001be0| 0d 3b 3b 3b 52 65 74 75 | 72 6e 73 20 6d 75 6c 74 |.;;;Retu|rns mult| |00001bf0| 69 70 6c 69 63 61 74 69 | 76 65 20 69 6e 76 65 72 |iplicati|ve inver| |00001c00| 73 65 20 6f 66 20 78 31 | 20 6d 6f 64 20 78 30 20 |se of x1| mod x0 | |00001c10| 75 73 69 6e 67 20 74 68 | 65 20 65 78 74 65 6e 64 |using th|e extend| |00001c20| 65 64 0d 3b 3b 3b 76 65 | 72 73 69 6f 6e 20 6f 66 |ed.;;;ve|rsion of| |00001c30| 20 45 75 63 6c 69 64 27 | 73 20 61 6c 67 6f 72 69 | Euclid'|s algori| |00001c40| 74 68 6d 2e 20 49 66 20 | 74 68 65 20 6e 75 6d 62 |thm. If |the numb| |00001c50| 65 72 73 20 61 72 65 20 | 6e 6f 74 20 72 65 6c 61 |ers are |not rela| |00001c60| 74 69 76 65 6c 79 0d 3b | 3b 3b 70 72 69 6d 65 20 |tively.;|;;prime | |00001c70| 6e 69 6c 20 77 69 6c 6c | 20 62 65 20 72 65 74 75 |nil will| be retu| |00001c80| 72 6e 65 64 2e 20 28 61 | 6c 67 6f 72 69 74 68 6d |rned. (a|lgorithm| |00001c90| 20 64 65 64 75 63 65 64 | 20 66 72 6f 6d 20 52 53 | deduced| from RS| |00001ca0| 41 20 70 61 70 65 72 29 | 0d 28 64 65 66 75 6e 20 |A paper)|.(defun | |00001cb0| 6d 75 6c 74 69 70 6c 69 | 63 61 74 69 76 65 2d 69 |multipli|cative-i| |00001cc0| 6e 76 65 72 73 65 20 28 | 6e 20 6d 6f 64 75 6c 75 |nverse (|n modulu| |00001cd0| 73 29 0d 20 20 28 6c 61 | 62 65 6c 73 20 28 28 6d |s). (la|bels ((m| |00001ce0| 75 6c 74 69 6e 76 20 28 | 78 31 20 78 30 20 61 31 |ultinv (|x1 x0 a1| |00001cf0| 20 61 30 20 62 31 20 62 | 30 20 6d 29 0d 20 20 20 | a0 b1 b|0 m). | |00001d00| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00001d10| 20 28 69 66 20 28 3d 20 | 78 31 20 30 29 0d 20 20 | (if (= |x1 0). | |00001d20| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00001d30| 20 20 20 20 28 69 66 20 | 28 3d 20 78 30 20 31 29 | (if |(= x0 1)| |00001d40| 20 28 6d 6f 64 20 62 30 | 20 6d 29 29 0d 20 20 20 | (mod b0| m)). | |00001d50| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00001d60| 20 20 20 28 6d 75 6c 74 | 69 6e 76 20 28 6d 6f 64 | (mult|inv (mod| |00001d70| 20 78 30 20 78 31 29 20 | 78 31 0d 20 20 20 20 20 | x0 x1) |x1. | |00001d80| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00001d90| 20 20 20 20 20 20 20 20 | 20 20 28 2d 20 61 30 20 | | (- a0 | |00001da0| 28 2a 20 28 74 72 75 6e | 63 61 74 65 20 78 30 20 |(* (trun|cate x0 | |00001db0| 78 31 29 20 61 31 29 29 | 20 61 31 0d 20 20 20 20 |x1) a1))| a1. | |00001dc0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00001dd0| 20 20 20 20 20 20 20 20 | 20 20 20 28 2d 20 62 30 | | (- b0| |00001de0| 20 28 2a 20 28 74 72 75 | 6e 63 61 74 65 20 78 30 | (* (tru|ncate x0| |00001df0| 20 78 31 29 20 62 31 29 | 29 20 62 31 0d 20 20 20 | x1) b1)|) b1. | |00001e00| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00001e10| 20 20 20 20 20 20 20 20 | 20 20 20 20 28 69 66 20 | | (if | |00001e20| 6d 20 6d 20 78 30 29 29 | 29 29 29 0d 20 20 20 20 |m m x0))|))). | |00001e30| 20 20 20 20 20 20 28 6d | 75 6c 74 69 6e 76 20 6e | (m|ultinv n| |00001e40| 20 6d 6f 64 75 6c 75 73 | 20 30 20 31 20 31 20 30 | modulus| 0 1 1 0| |00001e50| 20 6e 69 6c 29 29 29 0d | 0d 0d 3b 3b 3b 54 68 69 | nil))).|..;;;Thi| |00001e60| 73 20 66 75 6e 63 74 69 | 6f 6e 20 72 65 74 75 72 |s functi|on retur| |00001e70| 6e 73 20 74 68 65 20 69 | 6e 74 65 67 65 72 20 65 |ns the i|nteger e| |00001e80| 71 75 69 76 61 6c 65 6e | 74 20 74 6f 20 74 68 65 |quivalen|t to the| |00001e90| 20 73 74 72 69 6e 67 0d | 28 64 65 66 75 6e 20 73 | string.|(defun s| |00001ea0| 74 72 69 6e 67 2d 74 6f | 2d 69 6e 74 20 28 73 29 |tring-to|-int (s)| |00001eb0| 0d 20 28 6c 65 74 20 28 | 28 72 65 73 75 6c 74 20 |. (let (|(result | |00001ec0| 30 29 29 0d 20 20 28 64 | 6f 74 69 6d 65 73 20 28 |0)). (d|otimes (| |00001ed0| 69 20 28 6c 65 6e 67 74 | 68 20 73 29 20 72 65 73 |i (lengt|h s) res| |00001ee0| 75 6c 74 29 0d 20 20 20 | 28 73 65 74 66 20 72 65 |ult). |(setf re| |00001ef0| 73 75 6c 74 20 28 64 70 | 62 20 28 63 68 61 72 2d |sult (dp|b (char-| |00001f00| 69 6e 74 20 28 63 68 61 | 72 20 73 20 69 29 29 20 |int (cha|r s i)) | |00001f10| 28 62 79 74 65 20 38 20 | 28 2a 20 28 2d 20 28 6c |(byte 8 |(* (- (l| |00001f20| 65 6e 67 74 68 20 73 29 | 20 69 20 31 29 20 38 29 |ength s)| i 1) 8)| |00001f30| 29 20 72 65 73 75 6c 74 | 29 29 29 29 29 0d 0d 0d |) result|)))))...| |00001f40| 3b 3b 3b 54 68 69 73 20 | 66 75 6e 63 74 69 6f 6e |;;;This |function| |00001f50| 20 72 65 74 75 72 6e 73 | 20 74 68 65 20 73 74 72 | returns| the str| |00001f60| 69 6e 67 20 65 71 75 69 | 76 61 6c 65 6e 74 20 6f |ing equi|valent o| |00001f70| 66 20 61 6e 20 69 6e 74 | 65 67 65 72 0d 28 64 65 |f an int|eger.(de| |00001f80| 66 75 6e 20 69 6e 74 2d | 74 6f 2d 73 74 72 69 6e |fun int-|to-strin| |00001f90| 67 20 28 6e 20 26 6f 70 | 74 69 6f 6e 61 6c 20 28 |g (n &op|tional (| |00001fa0| 73 74 72 2d 6c 65 6e 20 | 28 63 65 69 6c 69 6e 67 |str-len |(ceiling| |00001fb0| 20 28 69 6e 74 65 67 65 | 72 2d 6c 65 6e 67 74 68 | (intege|r-length| |00001fc0| 20 6e 29 20 38 29 29 29 | 0d 20 20 28 6c 65 74 20 | n) 8)))|. (let | |00001fd0| 28 28 72 65 73 75 6c 74 | 20 28 6d 61 6b 65 2d 73 |((result| (make-s| |00001fe0| 74 72 69 6e 67 20 73 74 | 72 2d 6c 65 6e 29 29 29 |tring st|r-len)))| |00001ff0| 0d 20 20 20 20 28 64 6f | 74 69 6d 65 73 20 28 69 |. (do|times (i| |00002000| 20 73 74 72 2d 6c 65 6e | 20 72 65 73 75 6c 74 29 | str-len| result)| |00002010| 0d 20 20 20 20 20 20 28 | 73 65 74 66 20 28 63 68 |. (|setf (ch| |00002020| 61 72 20 72 65 73 75 6c | 74 20 69 29 20 28 63 6f |ar resul|t i) (co| |00002030| 64 65 2d 63 68 61 72 20 | 28 6c 64 62 20 28 62 79 |de-char |(ldb (by| |00002040| 74 65 20 38 20 28 2a 20 | 28 2d 20 73 74 72 2d 6c |te 8 (* |(- str-l| |00002050| 65 6e 20 69 20 31 29 20 | 38 29 29 20 6e 29 29 29 |en i 1) |8)) n)))| |00002060| 29 29 29 0d 0d 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |)))..;;;|;;;;;;;;| |00002070| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;| |00002080| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;| |00002090| 3b 3b 3b 3b 3b 3b 3b 0d | 0d 23 7c 0d 0d 28 64 65 |;;;;;;;.|.#|..(de| |000020a0| 66 76 61 72 20 70 75 62 | 29 0d 28 64 65 66 76 61 |fvar pub|).(defva| |000020b0| 72 20 70 72 69 29 0d 0d | 3b 3b 35 30 20 64 69 67 |r pri)..|;;50 dig| |000020c0| 69 74 20 70 72 69 6d 65 | 73 20 2d 3e 20 7e 31 30 |it prime|s -> ~10| |000020d0| 30 20 64 69 67 69 74 20 | 6b 65 79 73 0d 28 6d 75 |0 digit |keys.(mu| |000020e0| 6c 74 69 70 6c 65 2d 76 | 61 6c 75 65 2d 73 65 74 |ltiple-v|alue-set| |000020f0| 71 0d 20 20 28 70 75 62 | 20 70 72 69 29 0d 20 20 |q. (pub| pri). | |00002100| 28 52 53 41 2d 67 65 6e | 2d 6b 65 79 73 20 37 37 |(RSA-gen|-keys 77| |00002110| 30 30 33 33 37 33 39 34 | 36 34 38 34 36 31 35 35 |00337394|64846155| |00002120| 36 35 30 37 37 38 35 35 | 38 37 34 39 33 35 36 38 |65077855|87493568| |00002130| 39 37 38 39 35 38 35 37 | 31 34 38 38 31 39 35 33 |97895857|14881953| |00002140| 0d 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | | |00002150| 20 38 32 37 36 33 31 34 | 32 32 37 38 35 35 38 34 | 8276314|22785584| |00002160| 33 37 36 30 38 36 30 39 | 30 36 30 33 38 31 33 37 |37608609|06038137| |00002170| 32 33 36 37 39 31 32 33 | 32 37 39 35 35 31 35 33 |23679123|27955153| |00002180| 36 38 39 29 29 0d 0d 3b | 3b 35 20 64 69 67 69 74 |689))..;|;5 digit| |00002190| 20 70 72 69 6d 65 73 20 | 2d 3e 20 7e 31 30 20 64 | primes |-> ~10 d| |000021a0| 69 67 69 74 20 6b 65 79 | 73 20 2d 20 66 61 73 74 |igit key|s - fast| |000021b0| 65 72 20 70 65 72 66 6f | 72 6d 61 6e 63 65 0d 28 |er perfo|rmance.(| |000021c0| 6d 75 6c 74 69 70 6c 65 | 2d 76 61 6c 75 65 2d 73 |multiple|-value-s| |000021d0| 65 74 71 20 28 70 75 62 | 20 70 72 69 29 20 28 52 |etq (pub| pri) (R| |000021e0| 53 41 2d 67 65 6e 2d 6b | 65 79 73 20 34 37 32 35 |SA-gen-k|eys 4725| |000021f0| 31 20 33 35 37 34 37 29 | 29 0d 0d 28 52 53 41 2d |1 35747)|)..(RSA-| |00002200| 64 65 63 6f 64 65 2d 73 | 74 72 69 6e 67 20 28 52 |decode-s|tring (R| |00002210| 53 41 2d 65 6e 63 6f 64 | 65 2d 73 74 72 69 6e 67 |SA-encod|e-string| |00002220| 20 22 74 68 65 20 72 61 | 69 6e 20 69 6e 20 73 70 | "the ra|in in sp| |00002230| 61 69 6e 22 20 70 75 62 | 29 20 70 72 69 29 0d 0d |ain" pub|) pri)..| |00002240| 28 52 53 41 2d 64 65 63 | 6f 64 65 2d 73 74 72 69 |(RSA-dec|ode-stri| |00002250| 6e 67 20 28 52 53 41 2d | 65 6e 63 6f 64 65 2d 73 |ng (RSA-|encode-s| |00002260| 74 72 69 6e 67 20 22 74 | 68 65 20 72 61 69 6e 20 |tring "t|he rain | |00002270| 69 6e 20 73 70 61 69 6e | 22 20 70 72 69 29 20 70 |in spain|" pri) p| |00002280| 75 62 29 0d 0d 28 52 53 | 41 2d 65 6e 63 6f 64 65 |ub)..(RS|A-encode| |00002290| 2d 66 69 6c 65 20 28 63 | 68 6f 6f 73 65 2d 66 69 |-file (c|hoose-fi| |000022a0| 6c 65 2d 64 69 61 6c 6f | 67 29 20 28 63 68 6f 6f |le-dialo|g) (choo| |000022b0| 73 65 2d 6e 65 77 2d 66 | 69 6c 65 2d 64 69 61 6c |se-new-f|ile-dial| |000022c0| 6f 67 29 20 70 75 62 29 | 0d 28 52 53 41 2d 64 65 |og) pub)|.(RSA-de| |000022d0| 63 6f 64 65 2d 66 69 6c | 65 20 28 63 68 6f 6f 73 |code-fil|e (choos| |000022e0| 65 2d 66 69 6c 65 2d 64 | 69 61 6c 6f 67 29 20 28 |e-file-d|ialog) (| |000022f0| 63 68 6f 6f 73 65 2d 6e | 65 77 2d 66 69 6c 65 2d |choose-n|ew-file-| |00002300| 64 69 61 6c 6f 67 29 20 | 70 72 69 29 0d 0d 0d 3b |dialog) |pri)...;| |00002310| 3b 73 63 68 6e 69 74 7a | 79 20 64 65 6d 6f 20 2d |;schnitz|y demo -| |00002320| 20 64 72 61 67 20 26 20 | 64 72 6f 70 20 65 6e 63 | drag & |drop enc| |00002330| 6f 64 69 6e 67 2f 64 65 | 63 6f 64 69 6e 67 20 64 |oding/de|coding d| |00002340| 69 61 6c 6f 67 20 69 74 | 65 6d 73 0d 0d 28 6f 6f |ialog it|ems..(oo| |00002350| 75 2d 64 65 70 65 6e 64 | 65 6e 63 69 65 73 20 3a |u-depend|encies :| |00002360| 64 72 61 67 67 61 62 6c | 65 2d 73 76 6d 0d 20 20 |draggabl|e-svm. | |00002370| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00002380| 3a 64 72 6f 70 70 61 62 | 6c 65 2d 73 76 6d 29 0d |:droppab|le-svm).| |00002390| 0d 28 64 65 66 76 61 72 | 20 70 75 62 29 0d 28 64 |.(defvar| pub).(d| |000023a0| 65 66 76 61 72 20 70 72 | 69 29 0d 0d 28 6d 75 6c |efvar pr|i)..(mul| |000023b0| 74 69 70 6c 65 2d 76 61 | 6c 75 65 2d 73 65 74 71 |tiple-va|lue-setq| |000023c0| 20 28 70 75 62 20 70 72 | 69 29 20 28 52 53 41 2d | (pub pr|i) (RSA-| |000023d0| 67 65 6e 2d 6b 65 79 73 | 20 34 37 32 35 31 20 33 |gen-keys| 47251 3| |000023e0| 35 37 34 37 29 29 0d 0d | 3b 3b 65 6e 63 6f 64 65 |5747))..|;;encode| |000023f0| 20 26 20 64 65 63 6f 64 | 65 0d 28 52 53 41 2d 64 | & decod|e.(RSA-d| |00002400| 65 63 6f 64 65 2d 73 74 | 72 69 6e 67 20 28 52 53 |ecode-st|ring (RS| |00002410| 41 2d 65 6e 63 6f 64 65 | 2d 73 74 72 69 6e 67 20 |A-encode|-string | |00002420| 22 74 68 65 20 72 61 69 | 6e 20 69 6e 20 73 70 61 |"the rai|n in spa| |00002430| 69 6e 22 20 70 75 62 29 | 20 70 72 69 29 0d 0d 3b |in" pub)| pri)..;| |00002440| 3b 64 69 67 69 74 61 6c | 20 73 69 67 6e 61 74 75 |;digital| signatu| |00002450| 72 65 0d 28 52 53 41 2d | 64 65 63 6f 64 65 2d 73 |re.(RSA-|decode-s| |00002460| 74 72 69 6e 67 20 28 52 | 53 41 2d 65 6e 63 6f 64 |tring (R|SA-encod| |00002470| 65 2d 73 74 72 69 6e 67 | 20 22 69 74 27 73 20 6d |e-string| "it's m| |00002480| 65 20 36 2f 32 30 2f 39 | 32 22 20 70 72 69 29 20 |e 6/20/9|2" pri) | |00002490| 70 75 62 29 0d 0d 0d 3b | 3b 75 73 65 20 64 72 6f |pub)...;|;use dro| |000024a0| 70 70 61 62 6c 65 20 6d | 69 78 69 6e 20 74 6f 20 |ppable m|ixin to | |000024b0| 63 72 65 61 74 65 20 61 | 6e 20 72 73 61 20 64 69 |create a|n rsa di| |000024c0| 61 6c 6f 67 20 69 74 65 | 6d 0d 28 64 65 66 63 6c |alog ite|m.(defcl| |000024d0| 61 73 73 20 72 73 61 2d | 77 69 64 67 65 74 20 28 |ass rsa-|widget (| |000024e0| 64 72 6f 70 70 61 62 6c | 65 2d 73 76 6d 20 73 74 |droppabl|e-svm st| |000024f0| 61 74 69 63 2d 74 65 78 | 74 2d 64 69 61 6c 6f 67 |atic-tex|t-dialog| |00002500| 2d 69 74 65 6d 29 0d 20 | 20 28 28 70 75 62 6c 69 |-item). | ((publi| |00002510| 63 2d 6b 65 79 20 20 20 | 3a 61 63 63 65 73 73 6f |c-key |:accesso| |00002520| 72 20 70 75 62 6c 69 63 | 2d 6b 65 79 0d 20 20 20 |r public|-key. | |00002530| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 3a 69 | | :i| |00002540| 6e 69 74 61 72 67 20 20 | 3a 70 75 62 6c 69 63 2d |nitarg |:public-| |00002550| 6b 65 79 29 0d 20 20 20 | 28 70 72 69 76 61 74 65 |key). |(private| |00002560| 2d 6b 65 79 20 20 3a 61 | 63 63 65 73 73 6f 72 20 |-key :a|ccessor | |00002570| 70 72 69 76 61 74 65 2d | 6b 65 79 0d 20 20 20 20 |private-|key. | |00002580| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 3a 69 6e | | :in| |00002590| 69 74 61 72 67 20 20 3a | 70 72 69 76 61 74 65 2d |itarg :|private-| |000025a0| 6b 65 79 29 29 29 0d 0d | 28 64 65 66 75 6e 20 65 |key)))..|(defun e| |000025b0| 6e 63 6f 64 65 72 2d 66 | 6e 20 28 64 69 20 74 61 |ncoder-f|n (di ta| |000025c0| 72 67 65 74 2d 64 69 20 | 6f 66 66 73 65 74 20 77 |rget-di |offset w| |000025d0| 68 65 72 65 29 0d 20 20 | 28 64 65 63 6c 61 72 65 |here). |(declare| |000025e0| 20 28 69 67 6e 6f 72 65 | 20 6f 66 66 73 65 74 20 | (ignore| offset | |000025f0| 77 68 65 72 65 29 29 0d | 20 20 28 73 65 74 2d 64 |where)).| (set-d| |00002600| 69 61 6c 6f 67 2d 69 74 | 65 6d 2d 74 65 78 74 20 |ialog-it|em-text | |00002610| 74 61 72 67 65 74 2d 64 | 69 20 28 52 53 41 2d 65 |target-d|i (RSA-e| |00002620| 6e 63 6f 64 65 2d 73 74 | 72 69 6e 67 0d 20 20 20 |ncode-st|ring. | |00002630| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00002640| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00002650| 28 64 69 61 6c 6f 67 2d | 69 74 65 6d 2d 74 65 78 |(dialog-|item-tex| |00002660| 74 20 74 61 72 67 65 74 | 2d 64 69 29 0d 20 20 20 |t target|-di). | |00002670| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00002680| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00002690| 28 70 72 69 76 61 74 65 | 2d 6b 65 79 20 64 69 29 |(private|-key di)| |000026a0| 29 29 29 0d 0d 28 64 65 | 66 75 6e 20 64 65 63 6f |)))..(de|fun deco| |000026b0| 64 65 72 2d 66 6e 20 28 | 64 69 20 74 61 72 67 65 |der-fn (|di targe| |000026c0| 74 2d 64 69 20 6f 66 66 | 73 65 74 20 77 68 65 72 |t-di off|set wher| |000026d0| 65 29 0d 20 20 28 64 65 | 63 6c 61 72 65 20 28 69 |e). (de|clare (i| |000026e0| 67 6e 6f 72 65 20 6f 66 | 66 73 65 74 20 77 68 65 |gnore of|fset whe| |000026f0| 72 65 29 29 0d 20 20 28 | 73 65 74 2d 64 69 61 6c |re)). (|set-dial| |00002700| 6f 67 2d 69 74 65 6d 2d | 74 65 78 74 20 74 61 72 |og-item-|text tar| |00002710| 67 65 74 2d 64 69 20 28 | 52 53 41 2d 64 65 63 6f |get-di (|RSA-deco| |00002720| 64 65 2d 73 74 72 69 6e | 67 0d 20 20 20 20 20 20 |de-strin|g. | |00002730| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00002740| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 28 64 69 | | (di| |00002750| 61 6c 6f 67 2d 69 74 65 | 6d 2d 74 65 78 74 20 74 |alog-ite|m-text t| |00002760| 61 72 67 65 74 2d 64 69 | 29 0d 20 20 20 20 20 20 |arget-di|). | |00002770| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00002780| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 28 70 75 | | (pu| |00002790| 62 6c 69 63 2d 6b 65 79 | 20 64 69 29 29 29 29 0d |blic-key| di)))).| |000027a0| 0d 28 73 65 74 66 20 2a | 74 65 73 74 2d 77 2a 0d |.(setf *|test-w*.| |000027b0| 20 20 20 20 20 20 28 6d | 61 6b 65 2d 69 6e 73 74 | (m|ake-inst| |000027c0| 61 6e 63 65 0d 20 20 20 | 20 20 20 20 20 27 64 69 |ance. | 'di| |000027d0| 61 6c 6f 67 0d 20 20 20 | 20 20 20 20 20 3a 77 69 |alog. | :wi| |000027e0| 6e 64 6f 77 2d 74 79 70 | 65 20 20 20 3a 64 6f 63 |ndow-typ|e :doc| |000027f0| 75 6d 65 6e 74 0d 20 20 | 20 20 20 20 20 20 3a 76 |ument. | :v| |00002800| 69 65 77 2d 70 6f 73 69 | 74 69 6f 6e 20 3a 63 65 |iew-posi|tion :ce| |00002810| 6e 74 65 72 65 64 0d 20 | 20 20 20 20 20 20 20 3a |ntered. | :| |00002820| 76 69 65 77 2d 73 69 7a | 65 20 20 20 20 20 23 40 |view-siz|e #@| |00002830| 28 32 32 30 20 32 30 30 | 29 0d 20 20 20 20 20 20 |(220 200|). | |00002840| 20 20 3a 77 69 6e 64 6f | 77 2d 74 69 74 6c 65 20 | :windo|w-title | |00002850| 20 22 72 73 61 20 64 65 | 6d 6f 22 0d 20 20 20 20 | "rsa de|mo". | |00002860| 20 20 20 20 3a 63 6c 6f | 73 65 2d 62 6f 78 2d 70 | :clo|se-box-p| |00002870| 20 20 20 74 0d 20 20 20 | 20 20 20 20 3a 76 69 65 | t. | :vie| |00002880| 77 2d 73 75 62 76 69 65 | 77 73 0d 20 20 20 20 20 |w-subvie|ws. | |00002890| 20 20 20 28 6c 69 73 74 | 20 28 6d 61 6b 65 2d 69 | (list| (make-i| |000028a0| 6e 73 74 61 6e 63 65 0d | 20 20 20 20 20 20 20 20 |nstance.| | |000028b0| 20 20 20 20 20 20 20 20 | 27 72 73 61 2d 77 69 64 | |'rsa-wid| |000028c0| 67 65 74 0d 20 20 20 20 | 20 20 20 20 20 20 20 20 |get. | | |000028d0| 20 20 20 20 3a 70 72 69 | 76 61 74 65 2d 6b 65 79 | :pri|vate-key| |000028e0| 20 70 72 69 0d 20 20 20 | 20 20 20 20 20 20 20 20 | pri. | | |000028f0| 20 20 20 20 20 3a 76 69 | 65 77 2d 70 6f 73 69 74 | :vi|ew-posit| |00002900| 69 6f 6e 20 20 20 20 23 | 40 28 31 30 20 32 30 29 |ion #|@(10 20)| |00002910| 0d 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | | |00002920| 20 3a 64 69 61 6c 6f 67 | 2d 69 74 65 6d 2d 74 65 | :dialog|-item-te| |00002930| 78 74 20 22 64 72 61 67 | 20 26 20 64 72 6f 70 20 |xt "drag| & drop | |00002940| 74 6f 20 65 6e 63 6f 64 | 65 22 0d 20 20 20 20 20 |to encod|e". | |00002950| 20 20 20 20 20 20 20 20 | 20 20 20 3a 76 69 65 77 | | :view| |00002960| 2d 6e 69 63 6b 2d 6e 61 | 6d 65 20 20 20 3a 69 31 |-nick-na|me :i1| |00002970| 0d 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | | |00002980| 20 3a 64 72 6f 70 2d 61 | 63 74 69 6f 6e 2d 66 6e | :drop-a|ction-fn| |00002990| 20 20 20 27 65 6e 63 6f | 64 65 72 2d 66 6e 0d 20 | 'enco|der-fn. | |000029a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 3a | | :| |000029b0| 64 72 61 67 2d 62 6f 75 | 6e 64 73 20 20 20 20 20 |drag-bou|nds | |000029c0| 20 3a 6e 6f 6e 65 0d 20 | 20 20 20 20 20 20 20 20 | :none. | | |000029d0| 20 20 20 20 20 20 20 29 | 0d 20 20 20 20 20 20 20 | )|. | |000029e0| 20 20 20 20 20 20 20 0d | 20 20 20 20 20 20 20 20 | .| | |000029f0| 20 20 20 20 20 20 28 6d | 61 6b 65 2d 69 6e 73 74 | (m|ake-inst| |00002a00| 61 6e 63 65 0d 20 20 20 | 20 20 20 20 20 20 20 20 |ance. | | |00002a10| 20 20 20 20 20 27 72 73 | 61 2d 77 69 64 67 65 74 | 'rs|a-widget| |00002a20| 0d 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | | |00002a30| 20 3a 70 75 62 6c 69 63 | 2d 6b 65 79 20 70 75 62 | :public|-key pub| |00002a40| 0d 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | | |00002a50| 20 3a 76 69 65 77 2d 70 | 6f 73 69 74 69 6f 6e 20 | :view-p|osition | |00002a60| 20 20 20 20 23 40 28 31 | 30 20 35 30 29 0d 20 20 | #@(1|0 50). | |00002a70| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 3a 64 | | :d| |00002a80| 69 61 6c 6f 67 2d 69 74 | 65 6d 2d 74 65 78 74 20 |ialog-it|em-text | |00002a90| 22 64 72 61 67 20 26 20 | 64 72 6f 70 20 74 6f 20 |"drag & |drop to | |00002aa0| 64 65 63 6f 64 65 22 0d | 20 20 20 20 20 20 20 20 |decode".| | |00002ab0| 20 20 20 20 20 20 20 20 | 3a 76 69 65 77 2d 6e 69 | |:view-ni| |00002ac0| 63 6b 2d 6e 61 6d 65 20 | 20 20 3a 69 32 0d 20 20 |ck-name | :i2. | |00002ad0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 3a 64 | | :d| |00002ae0| 72 6f 70 2d 61 63 74 69 | 6f 6e 2d 66 6e 20 20 20 |rop-acti|on-fn | |00002af0| 27 64 65 63 6f 64 65 72 | 2d 66 6e 0d 20 20 20 20 |'decoder|-fn. | |00002b00| 20 20 20 20 20 20 20 20 | 20 20 20 20 3a 64 72 61 | | :dra| |00002b10| 67 2d 62 6f 75 6e 64 73 | 20 20 20 20 20 20 20 3a |g-bounds| :| |00002b20| 6e 6f 6e 65 0d 20 20 20 | 20 20 20 20 20 20 20 20 |none. | | |00002b30| 20 20 20 20 20 29 0d 0d | 20 20 20 20 20 20 20 20 | )..| | |00002b40| 20 20 20 20 20 20 28 6d | 61 6b 65 2d 69 6e 73 74 | (m|ake-inst| |00002b50| 61 6e 63 65 0d 20 20 20 | 20 20 20 20 20 20 20 20 |ance. | | |00002b60| 20 20 20 20 20 27 65 64 | 69 74 61 62 6c 65 2d 74 | 'ed|itable-t| |00002b70| 65 78 74 2d 64 69 61 6c | 6f 67 2d 69 74 65 6d 0d |ext-dial|og-item.| |00002b80| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | | |00002b90| 3a 77 72 61 70 2d 70 20 | 20 20 20 20 20 20 20 20 |:wrap-p | | |00002ba0| 20 20 20 20 74 0d 20 20 | 20 20 20 20 20 20 20 20 | t. | | |00002bb0| 20 20 20 20 20 20 3a 76 | 69 65 77 2d 70 6f 73 69 | :v|iew-posi| |00002bc0| 74 69 6f 6e 20 20 20 20 | 20 20 23 40 28 31 30 20 |tion | #@(10 | |00002bd0| 38 30 29 0d 20 20 20 20 | 20 20 20 20 20 20 20 20 |80). | | |00002be0| 20 20 20 20 3a 76 69 65 | 77 2d 73 69 7a 65 20 20 | :vie|w-size | |00002bf0| 20 20 20 20 20 20 20 20 | 23 40 28 32 30 30 20 31 | |#@(200 1| |00002c00| 30 30 29 0d 20 20 20 20 | 20 20 20 20 20 20 20 20 |00). | | |00002c10| 20 20 20 20 3a 64 69 61 | 6c 6f 67 2d 69 74 65 6d | :dia|log-item| |00002c20| 2d 74 65 78 74 20 20 20 | 22 49 20 73 75 72 65 20 |-text |"I sure | |00002c30| 68 6f 70 65 20 74 68 65 | 20 4e 53 41 20 69 73 6e |hope the| NSA isn| |00002c40| 27 74 20 77 61 74 63 68 | 69 6e 67 20 74 68 69 73 |'t watch|ing this| |00002c50| 20 64 65 6d 6f 22 0d 20 | 20 20 20 20 20 20 20 20 | demo". | | |00002c60| 20 20 20 20 20 20 20 29 | 29 29 29 0d 0d 7c 23 00 | )|)))..|#.| |00002c70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........| |00002c80| 00 00 01 00 00 00 01 68 | 00 00 00 68 00 00 00 52 |.......h|...h...R| |00002c90| 00 00 66 85 00 77 03 00 | 00 00 00 00 00 00 00 00 |..f..w..|........| |00002ca0| 00 00 66 75 0d 77 69 6e | 64 6f 77 2d 6d 69 78 69 |..fu.win|dow-mixi| |00002cb0| 08 52 53 41 2e 6c 69 73 | 70 00 02 00 00 00 54 45 |.RSA.lis|p.....TE| |00002cc0| 58 54 43 43 4c 32 01 00 | 00 00 00 60 00 00 00 00 |XTCCL2..|...`....| |00002cd0| 00 00 54 45 58 54 43 43 | 4c 32 01 00 00 00 00 60 |..TEXTCC|L2.....`| |00002ce0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........| |00002cf0| 00 00 a6 57 13 da 00 00 | 2b ef 00 00 01 ba 66 86 |...W....|+.....f.| |00002d00| 0d 2b 44 65 76 69 63 65 | 73 2e 6c 69 73 70 02 00 |.+Device|s.lisp..| |00002d10| 00 00 54 45 58 54 43 43 | 4c 32 01 00 00 42 00 ed |..TEXTCC|L2...B..| |00002d20| 00 00 00 00 66 87 00 00 | 00 00 0d c1 00 00 10 00 |....f...|........| |00002d30| 00 00 00 00 01 ba 00 00 | 04 00 a4 96 67 0e a5 b8 |........|....g...| |00002d40| 01 5d 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |.]......|........| |00002d50| 00 00 00 00 00 00 00 00 | 67 d7 00 04 00 00 00 00 |........|g.......| |00002d60| 00 00 00 00 67 db 00 01 | 00 00 00 00 00 00 00 00 |....g...|........| |00002d70| 00 00 00 00 11 00 00 00 | 66 86 0b 2b 46 69 6c 65 |........|f..+File| |00002d80| 00 00 00 0a 00 01 00 16 | 0a 00 01 00 00 00 00 00 |........|........| |00002d90| 00 0a 7f ff 07 43 6f 75 | 72 69 65 72 00 00 00 48 |.....Cou|rier...H| |00002da0| 00 0a 43 6f 75 72 69 65 | 72 00 00 00 00 00 00 00 |..Courie|r.......| |00002db0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........| |00002dc0| 00 00 00 06 00 08 00 2c | 00 06 02 c7 02 5d 00 2c |.......,|.....].,| |00002dd0| 00 06 02 c7 02 5d 00 00 | 00 00 00 00 23 0e 00 00 |.....]..|....#...| |00002de0| 23 0e 00 00 1f e4 01 00 | 00 00 01 00 00 00 01 68 |#.......|.......h| |00002df0| 00 00 00 68 00 00 00 52 | 00 dd a3 48 12 bc 00 00 |...h...R|...H....| |00002e00| 00 1c 00 52 00 01 46 52 | 45 44 00 01 00 12 4d 50 |...R..FR|ED....MP| |00002e10| 53 52 00 00 00 2a 00 02 | ff ff 00 00 00 00 00 00 |SR...*..|........| |00002e20| 00 00 00 03 ff ff 00 00 | 00 0e 00 00 00 00 03 ed |........|........| |00002e30| ff ff 00 00 00 1c 00 de | a7 3c 00 00 00 00 00 00 |........|.<......| |00002e40| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........| |00002e50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........| |00002e60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........| |00002e70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........| +--------+-------------------------+-------------------------+--------+--------+